package com.wish233.utils;

import cn.hutool.cron.CronUtil;
import cn.hutool.cron.task.Task;

import java.util.HashSet;
import java.util.Set;
import java.util.function.Consumer;

/**
 * @author WHH
 * 心跳工具
 */
public class HeartBeatUtils {

    private static final Set<String> HEART_BEAT_NODE_SET = new HashSet<>();


    /**
     * 添加心跳节点
     *
     * @param key
     */
    public static void addNode(String key) {
        HEART_BEAT_NODE_SET.add(key);
    }

    /**
     * 删除心跳节点
     *
     * @param key
     */
    public static void removeNode(String key) {
        HEART_BEAT_NODE_SET.remove(key);
    }

    public static Set<String> getSet() {
        return HEART_BEAT_NODE_SET;
    }

    /**
     * 心跳
     *
     * @param renewal 处理续期的逻辑
     */
    public static void doHeartBeat(Consumer<String> renewal) {
        //遍历节点集合
        //如果为空返回
        //不为空对每个节点进行续期
        CronUtil.schedule("*/10 * * * * *", (Task) () -> {
            for (String key : HEART_BEAT_NODE_SET) {
                renewal.accept(key);
            }
        });
        CronUtil.setMatchSecond(true);
        CronUtil.start();
    }


}
